# 配置详解地址：https://blog.csdn.net/wenboyu/article/details/103083395?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-1-103083395.pc_agg_rank_aggregation&utm_term=gunicorn+%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE&spm=1000.2123.3001.4430
# 服务访问地址：http://192.168.56.101/

import multiprocessing
import os

# 监听地址和端口
bind = "127.0.0.1:8000"  # 与nginx配置的端口一致

# 进程
workers = multiprocessing.cpu_count() * 2 + 1  # 进程数量
# 工作模式：
# worker_class = 'gevent'  # 使用gevent模式，还可以使用sync模式（默认模式）
# 同步Worker：sync 默认模式，也就是一次只处理一个请求
# 异步Worker：通过 Eventlet、Gevent 实现的异步模式
# 异步IO Worker：目前支持 gthread 和 gaiohttp 两种类型
worker_connections = 100  # 客户端最大同时连接数，使用于 gevent 和 eventlet 工作模式时
# 线程数：
# threads = 2 # 指定每个进程开启的线程数
# 工作进程中线程的数，建议值2-4 x CPU核心数
# 此配置只适用于 gthread 进程工作方式， 因为gevent这种使用的是协程工作方式。
timeout = 30  # worker超时时间，超时重启
graceful_timeout = 10  # 接收到restart信号后，worker可以在graceful_timeout时间内，继续处理完当前requests
keepalive = 5  # 连接上等待请求的秒数，默认情况下值为2。一般设定在1~5秒之间。

# 调试
reload = True  # 当代码有修改时，自动重启workers。适用于开发环境。
# reload_extra_files = []  # 扩展reload配置，增加templates，configurations等文件修改监控。

# server 机制
path_of_current_file = os.path.abspath(__file__)
path_of_current_dir = os.path.split(path_of_current_file)[0]
chdir = path_of_current_dir  # 在app加载之前，进入到此目录
# pidfile = ''               # 存储pid的文件路径

# 日志
loglevel = 'info'  # 日志等级：debug, info, warning, error, critical. 指的是错误日志的级别，而访问日志的级别无法设置
# capture_output   # 重定向stdout/stderr到error log file
accesslog = '/usr/local/ypn-admin/logs/access.log'  # 接收访问日志文件路径
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'  # 设置gunicorn生成的访问日志格式，错误日志无法设置
"""
其每个选项的含义如下：
h          remote address
l          '-'
u          currently '-', may be user name in future releases
t          date of the request
r          status line (e.g. ``GET / HTTP/1.1``)
s          status
b          response length or '-'
f          referer
a          user agent
T          request time in seconds
D          request time in microseconds
L          request time in decimal seconds
p          process ID
"""
errorlog = '/usr/local/ypn-admin/logs/error.log'  # 错误日志文件路径

# 进程名
# proc_name
# 设置进程名(setproctitle)，在ps，top等命令中会看到. 缺省值为default_proc_name配置。
